# -*- coding: utf-8 -*-

# Essa é a parte que provavelmente será atualizada
# ao longo do semestre

# Últimas notícias
addNews(13 ,8, "Site", "Site de MC102 no ar")

# Testes ainda não corrigidos (mas que fazem parte da média)
TESTS = ["A1", "A2", "A3", "E1", "E2", "LI", "L1", "L2", 
         "L3", "L4", "L5", "L6", "L7", "L8", "L9", "L10", "L11", #"L12", 
         "UL"]

HIDDEN_TESTS = ["HP", "HL"]

# Testes corrigidos
#SCORED_TESTS = ["A1", "A2", "A3", "E1", "E2", "L1", "L2", "L3", "L4", 
#                "L5", "L6", "L7", "L8", "L9", "L10", "L11", "LI", "HP", "HL"]

# Essa é a parte que deve ser configurada
# No comeco do semestre. Provavelmente você não
# mexerá nisso ao longo do semestre

# Tipos de médias para serem calculadas
addAverageType("TEO", "Média Teórica", NUMBER)
addAverageType("LAB", "Média de Laboratório", NUMBER)
addAverageType("EXAME", "Média Antes do Exame", NUMBER)
addAverageType("FINAL", "Média Final", NUMBER)
addAverageType("SIT", "Situação", TEXT)

# Função para o cálculo da média
def media(ra, lista):

    medias = {} # Média é um dicionário com todas as médias possíveis

    nlabs = 10 + 1 # + 1: labs com peso extra

    mt = ((lista["A1"]["SCORE"] + \
           lista["A2"]["SCORE"] + \
           lista["A3"]["SCORE"]) / 3.0)
    mp = 0.4 * lista["E1"]["SCORE"] + \
         0.45 * lista["E2"]["SCORE"] + \
         0.15 * mt + lista["LI"]["SCORE"]

    ml = ((lista["L1"]["SCORE"] + \
           lista["L2"]["SCORE"] + \
           lista["L3"]["SCORE"] + \
           lista["L4"]["SCORE"] + \
           lista["L5"]["SCORE"] + \
           lista["L6"]["SCORE"] + \
           2 * lista["L7"]["SCORE"] + \
	   lista["L8"]["SCORE"] + \
   	   lista["L9"]["SCORE"] + \
	   lista["L10"]["SCORE"] + \
	   lista["L11"]["SCORE"] + \
	   # 2 * lista["L12"]["SCORE"] + \
               0.0) / nlabs)
     
    ml = min(ml, 10)
    mp = min(mp, 10)

    help = False

    if lista["HP"]["PRESENT"]:
        old = mp
        mp = max(mp, lista["HP"]["SCORE"])
        help = old != mp

    if lista["HL"]["PRESENT"]:
        old = ml
        ml = max(ml, lista["HL"]["SCORE"])
        help = old != ml

    medias["TEO"] = mp
    medias["LAB"] = ml

    if (ml >= 4.95 and mp >= 4.95):
        medias["EXAME"] = (2 * mp + ml) / 3
        medias["FINAL"] = (2 * mp + ml) / 3
        if not help:
            medias["SIT"] = "Aprovou-se"
        else:
            medias["SIT"] = "Aprovado"
    else:
        medias["EXAME"] = min (mp, ml)
        medias["FINAL"] = (min (mp, ml) + lista["UL"]["SCORE"])/2
	if (medias["FINAL"] >= 5.0):
            if not help:
                medias["SIT"] = "Aprovou-se"
            else:
                medias["SIT"] = "Aprovado"
        elif ((not "L10" in SCORED_TESTS or
               not "L11" in SCORED_TESTS) and
              ml < 5.0 and mp >= 5.0):     
              medias["SIT"] = "Aguardando nota dos labs" 
        else:
            medias["SIT"] = "Exame"               
#            medias["SIT"] = "Reprovou-se"

    return (medias)   

AVERAGEFUNCTION = media

# Determina quais estatisticas serão mostradas na página
# de médias (se nenhuma for especificada, nada será mostrado)
# as estatisticas possiveis são: AVG - media, MAX - maximo, MIN - minimo
# e STD - desvio padrão.
# serão mostradas estatisticas para todo teste em SCORED_TESTS

STATS = [AVG, MAX, MIN, STD]
#STATSTEXT = "Texto que vai aparecer no link"
TABLE = False
#TABLETEXT = "Texto que vai aparecer no link"

# Strings utilizadas na hora de gerar a página html
DISCIPLINE_CODE = "MC102"
DISCIPLINE_NAME = "Algoritmos e Programação de Computadores"
TERM="Segundo semestre de 2009"
GROUPS_NAME = "K, L, M e N"

# Turmas
GROUPS=["K","L", "M", "N"]

# Nome dos testes (que serão impressos)
LABELS["A1"] = "Teste 1"
LABELS["A2"] = "Teste 2"
LABELS["A3"] = "Teste 3"
LABELS["E1"] = "Prova 1"
LABELS["E2"] = "Prova 2"
LABELS["L1"] = "Laboratório 1"
LABELS["L2"] = "Laboratório 2"
LABELS["L3"] = "Laboratório 3"
LABELS["L4"] = "Laboratório 4"
LABELS["L5"] = "Laboratório 5"
LABELS["L6"] = "Laboratório 6"
LABELS["L7"] = "Laboratório 7"
LABELS["L8"] = "Laboratório 8"
LABELS["L9"] = "Laboratório 9"
LABELS["L10"] = "Laboratório 10"
LABELS["L11"] = "Laboratório 11"
LABELS["L12"] = "Laboratório 12"
LABELS["L13"] = "Laboratório 13"
LABELS["L14"] = "Laboratório 14"
LABELS["UL"] = "Exame"
LABELS["LI"] = "Lista de Exercícios"

# Diretórios de onde serão lidos os arquivos. Todos
# os diretórios são sempre referenciados a partir de
# BASEDIR
GROUPSDIR="alunos"
TESTSDIR="notas/2009s1"
CLASSESDIR="aulas/mc102"
BASEDIR="../trunk"

# Diretório onde são gravados os documentos
# HTML - Nesse caso deve-se informar o caminho Completo
# To-Do para quando tiver tempo: permitir conexao via ssh

URL = "http://www.lsd.ic.unicamp.br/~rmm/mc102/"

# Arquivos extras a serem copiados (e apenas isso,
# veja a seção abaixo para arquivos que necessitam de
# um pré-processamento
EXTERNAL_FILES = ["feed.png", "vcss.png", "cc.png", "valid-xhtml10.png", "windowsCode1.gif", "windowsCode2.gif", "windowsDevCppe.gif", "windowsDevCppg.gif"]

# Arquivos que necessitam de pré-processamento. Você
# deve chamar a função para adicionar pré-processamento.
# Note que seu script deve ser responsável por copiar
# o arquivo para a sua posição final.
addFile("ementa.pdf", "make -C %(basedir)s/ementa HTMLDIR=%(htmldir)s")
addFile("lab00.pdf", "make -C %(basedir)s/lab00 HTMLDIR=%(htmldir)s")
# addFile("lista_01.pdf", "make -C %(basedir)s/listas/lista_01 "\
#         "HTMLDIR=%(htmldir)s")
# addFile("lista_02.pdf", "make -C %(basedir)s/listas/lista_02 "\
#         "HTMLDIR=%(htmldir)s")
# addFile("lista_03.pdf", "make -C %(basedir)s/listas/lista_03 "\
#         "HTMLDIR=%(htmldir)s")

# Aulas a serem publicadas. O valor atribuído é o
# Título da aula. 
# CLASSES["01"] = "Introdução à Programação de Computadores"
# CLASSES["02"] = "Variáveis e Atribuições"
# CLASSES["03"] = "Comandos de Entrada e Saída"
# CLASSES["04"] = "Atribuições e Operações Aritméticas"
# CLASSES["05"] = "Expressões Relacionais, Expressões Lógicas e" \
#                 "Comandos Condicionais I"
# CLASSES["06"] = "Comandos Condicionais II"
# CLASSES["07"] = "Comandos de Repetição I"
# CLASSES["08"] = "Comandos de Repetição II"
# CLASSES["09"] = "Vetores"
# CLASSES["10"] = "Matrizes"
# CLASSES["11"] = "Redefinição de tipos, Constantes, Registros e Enumerados"
# CLASSES["12"] = "Funções e Procedimentos I"
# CLASSES["13"] = "Funções e Procedimentos II"
# CLASSES["14"] = "Busca e Ordenação"
# CLASSES["15"] = "Cadeias de Caracteres"
# CLASSES["16"] = "Introdução a Recursão"
# CLASSES["17"] = "Busca e Ordenação Recursiva"
# CLASSES["18"] = "Busca Exaustivas e Outras Recursões"
# CLASSES["19"] = "Apontadores e Alocação Dinâmica de Memória"
# CLASSES["20"] = "Arquivos"
# CLASSES["21"] = "Arquivos Binários"
# CLASSES["22"] = "Listas Ligadas I"
# CLASSES["23"] = "Listas Ligadas II"

# Configuração do make que gera as aulas
# Não altere se você não quiser gerar nada
# diferente do que é feito hoje
#
# CLASSFILENAME="mc102-aula"
# CLASSPDF = "make -f $PWD/Makefile.aulas -C %(dir)s RADICAL=%(file)s " 
#           "AULA=%(class)s HTMLDIR=%(htmldir)s pdf"
# CLASSPDF4UP = "make -f $PWD/Makefile.aulas -C %(dir)s RADICAL=%(file)s " 
#           "AULA=%(class)s HTMLDIR=%(htmldir)s pdf4up"
# EXCLUDED_FILES = [".svn"]
CLASSEXTRAS = "exemplos"

# Algumas configurações da página principal
# que facilitam a manutenção.
SUSY_URL="http://susy.ic.unicamp.br:8888/mc102klmn"
HTMLDIR = "/tmp/public_html"
TABLE=False

# Algumas strings que podem ser configuradas,
# embora possuam um valor padrão

# TEST_NOT_SCORED_TEXT = "Não corrigido"
# ABSENT_TEXT = "Ausente"
